import BaseController from "./base.js";
/**
 * 后台登录接口
 */
export default class extends BaseController {
    /**
    * 管理员登录 
    *
    * @param {string} account 账号
    * @param {string} password 密码
    *
    * @returns {Promise} 登录状态提示信息
    * @example
    *
    * const login = await request.post("/api/admin/login/login",
    * {params: {account:"admin", password:"admin"}});
    *  返回对象包含以下属性：
    * {
    *   error:1000
	* 	 msg:'用户名不正确'
    * }
    */
   async loginAction(){//登录验证
       //获取前端提交过来的用户名，并定义一个常量存储它
	    if(think.isEmpty(this.post('account'))){
			return this.fail(1000,'请输入用户名');
		}
		const account = this.post('account');

		//获取前端提交过来的密码，并定义一个常量存储它
		if(think.isEmpty(this.post('password'))){
			return this.fail(1000,'请输入密码');
		}
		const password = this.post('password');
		
		//对用户名进行验证
		const user = await this.model('manager').where({account:account}).find();
		if(think.isEmpty(user)){
			return this.fail(1000,'用户名不正确');
		}

		// 对密码进行验证
        if(password != user.password){
            return this.fail(1000,'用户密码错误');
        }

		//实例化一个tokenservice对象，来调用create()方法创建一个token
		const TokenService = this.service('token');
		const token = await TokenService.create({
			id:user.id
		});

		//判断token是否创建成功
		if(think.isEmpty(token)){
			return this.fail('用户登录失败');
		}

		//令牌创建成功，返回给客户端"uerInfo"和"token"给前端
		const userInfo = {
			id:user.id,
			account:user.account,
			name:user.name
		};

		return this.success({
			token:token,
			userInfo:userInfo
		});
   }
}